home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 1
/
Gekikoh Dennoh Club Vol. 1 (Japan).7z
/
Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin
/
tools
/
pcd2
/
src
/
chkpcd.has
< prev
next >
Wrap
Text File
|
1996-06-25
|
3KB
|
143 lines
.include doscall.mac
*
* 指定ファイルがPhoto-CDファイルかどうか審査する
*
* in d0.w=FileHandle
* out bit0=192*128
* out bit1=384*256
* out bit2=768*512
* out bit3=1536*1024
* out bit4=3072*2048
* out bit15=overview data(7-0bit max num)
* out bit31=no pictures
.xdef ChkPCD
*
* 画像位置までSEEKする
*
* in d0.w=FileHandle
* in d1.w=IMAGE NUMBER(0=192*128,1=384*256,2=768*512)
*
.xdef Seek_PCD
ChkPCD:
movem.l d1/d7,-(sp)
move.w d0,d7
moveq.l #0,d1
move.w #0,-(sp)
move.l #0,-(sp)
move.w d7,-(sp)
DOS _SEEK
addq.l #8,sp
move.l #16,-(sp)
pea work
move.w d7,-(sp)
DOS _READ
lea.l (10,sp),sp
cmp.l #'PCD_',work
bne ChkPCD_2
cmp.l #'OPA'*$100,work+4
beq OverView
ChkPCD_2:
move.w #0,-(sp)
move.l #$800,-(sp)
move.w d7,-(sp)
DOS _SEEK
addq.l #8,sp
move.l #8,-(sp)
pea work
move.w d7,-(sp)
DOS _READ
lea.l (10,sp),sp
cmp.l #'PCD_',work
bne NoPicture
cmp.l #'IPI'*$100,work+4
bne NoPicture
move.w #0,-(sp)
move.l #$e00,-(sp)
move.w d7,-(sp)
DOS _SEEK
addq.l #8,sp
move.l #512,-(sp)
pea work
move.w d7,-(sp)
DOS _READ
lea.l (10,sp),sp
tst.b (work+9)
beq @f
bset.l #0,d1
@@:
move.l #512,-(sp)
pea work
move.w d7,-(sp)
DOS _READ
tst.b (work+9)
beq @f
bset.l #1,d1
@@:
DOS _READ
tst.b (work+9)
beq @f
bset.l #2,d1
@@:
DOS _READ
tst.b (work+9)
beq @f
bset.l #3,d1
@@:
DOS _READ
lea.l (10,sp),sp
tst.b (work+9)
beq @f
bset.l #4,d1
@@:
move.l d1,d0
movem.l (sp)+,d1/d7
rts
NoPicture:
moveq.l #-1,d0
movem.l (sp)+,d1/d7
rts
OverView:
move.b (work+$a),d0
lsl.w #8,d0
move.b (work+$b),d0
bset.l #15,d0
movem.l (sp)+,d1/d7
rts
.bss
.align 4
work: .ds.b 512 * ほとんどダミー
.text
*------------------------------
* 画像位置までシークする。
*------------------------------
.align 4
Seek_PCD:
movem.l d0-d1,-(sp)
move.w #0,-(sp)
add.w d1,d1
add.w d1,d1
move.l (@f,pc,d1.w),-(sp)
move.w d0,-(sp)
DOS _SEEK * エラーを検出していないとは・・・!
addq.l #8,sp
movem.l (sp)+,d0-d1
rts
.align 4
@@: .dc.l $2000,$b800,$30000 * ,$30000,$30000
*
* 4BASE以上のデータはまずBASEデータを展開しなくてはならないので、
* 初期シーク位置は同じになる。それから先のハフマンデータは
* 4BASE、16BASEの順に展開することになるのだが、
* メモリ不足(建て前)とプログラム技術(本音)によって未サポート
* 64BASE以上を展開したいのなら別ファイルから読み込むことになる(らしい)
* プロフォトCDマスターを持っていないのでよく分からない。
*